package learnJava.puzzlers;

import java.math.BigDecimal;

public class FloatPuzzlers {
    //float,double是用科学计数法表示的
    //并不是所有小数都能用浮点数精确表示（计算机是二进制，不能表示除1/pow(2,n)的分数）
    public static class Change{
        public static void main(String[] args) {
            System.out.println(2.00 - 1.10); //0.8999999999999999
            //劣质的解决方案
            System.out.printf("$%.2f%n",2.00 - 1.10);
            //解决方案1
            System.out.printf("%dcents%n",200-110);
            //解决方案2
            //注意使用string构造函数
            BigDecimal v1 = new BigDecimal("2.00");
            BigDecimal v2 = new BigDecimal("1.10");
            System.out.println(v1.subtract(v2));
            //不使用String构造的话，new BigDecimal(1.10)1.10不能精确表示
            System.out.println(new BigDecimal(2.00)
                    .subtract(new BigDecimal(1.10)));
        }
    }
}
